package com.bos.util;

import com.bos.data.model.AccessTokenModel;
import com.bos.data.model.weixin.Button;
import com.bos.data.model.weixin.CommonButton;
import com.bos.data.model.weixin.ComplexButton;
import com.bos.data.model.weixin.Menu;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.Map;


/**
 * 菜单管理器类
 *
 * @author liufeng
 * @date 2013-08-08
 */
public class MenuManager {
    private static Logger log = LoggerFactory.getLogger(MenuManager.class);

    public static void main(String[] args) {
        // 第三方用户唯一凭证
        String appId = "wxd842e30025df0f97";
        // 第三方用户唯一凭证密钥
        String appSecret = "349459f58dbf19a71f7f58c67f2eea3d";
        // 调用接口获取access_token
        AccessTokenModel at = WeiXinUtil.getAccessToken2(appId,appSecret);
        System.out.println(at.getToken());
        if (null != at) {
            // 调用接口创建菜单
            int result = WeiXinUtil.createMenu(getMenu(), at.getToken());

            // 判断菜单创建结果
            if (0 == result)
                log.info("菜单创建成功！");
            else
                log.info("菜单创建失败，错误码：" + result);
        }
    }

    /**
     * 组装菜单数据
     *
     * @return
     */
    public static Menu getMenu() {
        CommonButton btn11 = new CommonButton();
        btn11.setName("授权登录");
        btn11.setType("view");
        btn11.setUrl("http://hgbcbim.oicp.io/getNews");
        btn11.setKey("11");
        CommonButton btn12 = new CommonButton();
        btn12.setName("待开发");
        btn12.setType("view");
        btn12.setUrl("12");
        btn12.setKey("12");


        ComplexButton mainBtn1 = new ComplexButton();
        mainBtn1.setName("微信授权");
        mainBtn1.setSub_button(new CommonButton[] { btn11, btn12});



        /**
         * 这是公众号xiaoqrobot目前的菜单结构，每个一级菜单都有二级菜单项<br>
         *
         * 在某个一级菜单下没有二级菜单的情况，menu该如何定义呢？<br>
         * 比如，第三个一级菜单项不是“更多体验”，而直接是“幽默笑话”，那么menu应该这样定义：<br>
         * menu.setButton(new Button[] { mainBtn1, mainBtn2, btn33 });
         */
        Menu menu = new Menu();
        menu.setButton(new Button[] { mainBtn1 });

        return menu;
    }
}
